﻿Imports VN.INS.BL.BC
Imports System.Data
Imports System.Drawing

Partial Class Devida_AvanceFinanciero
    Inherits System.Web.UI.Page

#Region "EVENTOS"

#Region "VARIABLES"
    Dim _totalMetaAnual As Decimal = 0
    Dim _totalMetaProgMensual As Decimal = 0
    Dim _totalMetaProgAcum As Decimal = 0
    Dim _totalAcumEjecMayo_detalle As Decimal = 0 'Para lo ejecutado acumulado a Mayo
    Dim _totalVista_1_detalle As Decimal = 0
    Dim _totalVista_2_detalle As Decimal = 0
    Dim _totalVista_3_detalle As Decimal = 0
    Dim _totalVista_4_detalle As Decimal = 0

    'Para los calculos de las columnas auxiliares
    Dim _totalEjecMes_detalle As Decimal = 0
    Dim _totalEjecMesAcum_detalle As Decimal = 0

    Dim _totalMetaAnual_doc As Decimal = 0
    Dim _totalMetaProgMensual_doc As Decimal = 0
    Dim _totalMetaProgAcum_doc As Decimal = 0
    Dim _totalVista_1_doc As Decimal = 0
    Dim _totalVista_2_doc As Decimal = 0
    Dim _totalVista_3_doc As Decimal = 0
    Dim _totalVista_4_doc As Decimal = 0


    Dim _totalMetaAnual_formato As Decimal = 0
    Dim _totalMetaProgMensual_formato As Decimal = 0
    Dim _totalMetaProgAcum_formato As Decimal = 0
    Dim _totalVista_1_formato As Decimal = 0
    Dim _totalVista_2_formato As Decimal = 0
    Dim _totalVista_3_formato As Decimal = 0
    Dim _totalVista_4_formato As Decimal = 0

#End Region

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If (Not (Page.IsPostBack)) Then
            btn_guardar.Attributes.Add("onclick", "javascript:document.getElementById('" + btn_guardar.ClientID + "').disabled=true;" + Me.GetPostBackEventReference(btn_guardar))
            Dim NombreMonitoreadorAux As String = ""
            Dim pf As String

            'Capturamos parámetros
            ViewState("VSTPOA") = Request.QueryString("Param").ToString
            ViewState("VersionPoaVigente") = Request.QueryString("VersionPoaVigente").ToString
            ViewState("VersionPoaAvanceFin") = Request.QueryString("VersionPoaAvanceFin").ToString


            ViewState("NombreEjecutor") = Request.QueryString("NombreEjecutor").ToString
            ViewState("NombreEspecialista") = Request.QueryString("NombreEspecialista").ToString
            ViewState("NombreMonitoreador") = Request.QueryString("NombreMonitoreador").ToString

            ViewState("CodPeriodo") = Request.QueryString("CodPeriodo").ToString
            ViewState("NombrePeriodo") = Request.QueryString("NombrePeriodo").ToString

            Dim nombre As String = "<Font Color ='#000000'>ACTIVIDAD/PROYECTO: </Font> " + Request.QueryString("Nombre").ToString + "<br/> <Font Color ='#000000'>EJECUTOR: </Font>" + Request.QueryString("NombreEjecutor").ToString  'Nombre descripción del POA y Ejecutor

            Dim codigoPOA As String = ViewState("VSTPOA").ToString
            lblCodigo.Text = codigoPOA


            'Carga los meses que tienen plan de trabajo
            'ListaMes()
            'ddl_periodo_SelectedIndexChanged(sender, e)

            'Carga la grilla financiera del POA con plan de trabajo en cada periodo
            carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
            lblNombrePeriodo.Text = "MES: " & ViewState("NombrePeriodo") 'ddl_periodo.SelectedItem.Text.ToString

            If gv_Detalle.Rows.Count > 1 Then
                bloquear()
            End If
            If ViewState("VSinstruccion") = "s" Then    'Si es nuevo y no tiene Poa_Actividad_financiero
                btn_guardar.Visible = False
                btn_calcu.Visible = False
                'Mostrar Mensaje
                alerta.Mostrar_Alerta("Error", "El Poa seleccionado no cuenta con Programación Financiera Registrada")
                'ddl_periodo.Visible = False
                Exit Sub    'Salir de Load
            End If
            If ViewState("VSFILAS") <> "NULO" Or ViewState("VSFILAS") <> Nothing Then 'Si es edicion y tiene datos
                Dim htxtMes As HiddenField = CType(gv_Detalle.Rows(0).FindControl("hfMes"), HiddenField)    'Se carga el mes del periodo
                Dim htxtAño As HiddenField = CType(gv_Detalle.Rows(0).FindControl("hfAño"), HiddenField)    'Se carga el año del periodo
                'Mostramos los datos en el formulario, tanto visible como oculto
                Label3.Text = nombre
                Label6.Text = nombre
                Label7.Text = nombre
                Label11.Text = nombre

                'Label15.Text = " MES: " + MonthName(htxtMes.Value.ToString).ToUpper + " " + htxtAño.Value.ToString
                'Label16.Text = " MES: " + MonthName(htxtMes.Value.ToString).ToUpper + " " + htxtAño.Value.ToString

                Label15.Text = "MES: " & ViewState("NombrePeriodo")
                Label16.Text = "MES: " & ViewState("NombrePeriodo")

                'By Tigrito(14/06/2013)
                'NombreMonitoreadorAux = "MONITOREADOR :  " + Session("Nombre")
                NombreMonitoreadorAux = "ESPECIALISTA TECNICO :  " + ViewState("NombreMonitoreador")

                pf = "PPER : " + " " + Session("ABREVIATURA")
                lblNombMonitoreadorFormatoSolo.Text = NombreMonitoreadorAux
                Label13.Text = pf

                lblNombMonitoreadorFormatoDatos.Text = NombreMonitoreadorAux
                Label7.Text = pf

                txt.Text = ViewState("VSdate1")
                txt2.Text = ViewState("VSdate2")
                txt3.Text = ViewState("VSdate3")
                txt4.Text = ViewState("VSdate4")

                'By Tigrito: Estas etiquetas eran usadas antes de que se las añadiera dentro de la grilla gv_doc
                'lblf1.Text = ViewState("VSdate1")
                'lblf2.Text = ViewState("VSdate2")
                'lblf3.Text = ViewState("VSdate3")
                'lblf4.Text = ViewState("VSdate4")

                'Capturamos el año y el mes
                ViewState("VSañop") = htxtAño.Value.ToString
                ViewState("VSmesp") = htxtMes.Value.ToString

                'Bloquea los controles segun ingreso de datos
                'By Tigrito (06/06/2013): El bloqueo cuando el ingreso está terminado se hace en el procedure bloquear()... review
                bloquear()

                If ViewState("VSEST") = "2" Then    'Si es estado terminado
                    btn_guardar.Visible = False     'Oculta el boton guardar
                    chkTerminado.Checked = True     'Se marca el checkbox terminado
                End If
                ViewState("VSperfil") = Session("perfil").ToString
                If ViewState("VSperfil") = "AD" Or ViewState("VSperfil") = "EP" Or ViewState("VSperfil") = "RE" Then    'Si es Administrador o Especialista se oculta el boton guardar
                    btn_guardar.Visible = False
                End If
            Else        ' Es edicion pero no tiene datos del periodo
                alerta.Mostrar_Alerta("Error", "El POA no cuenta con plan de Trabajo para el presente Mes")
                'Ocultamos botones Guardar y Suma
                btn_guardar.Visible = False
                btn_calcu.Visible = False
                'Mostramos los datos en el formulario, tanto visible como oculto
                Label3.Text = nombre
                Label6.Text = nombre

                Label7.Text = nombre
                Label11.Text = nombre

                NombreMonitoreadorAux = "ESPECIALISTA TECNICO :  " + ViewState("NombreMonitoreador")

                pf = "PPER : " + " " + Session("ABREVIATURA")

                lblNombMonitoreadorFormatoSolo.Text = NombreMonitoreadorAux
                Label13.Text = pf

                lblNombMonitoreadorFormatoDatos.Text = NombreMonitoreadorAux
                Label7.Text = pf
                bloquear()
            End If

            'By Tigrito (04/07/2013): Este botón estará oculto para todos
            btn_calcu.Visible = False
        End If
    End Sub

    Protected Sub btn_guardar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_guardar.Click
        'Verificamos el ingreso de la fecha 1
        If txt.Text = "" Then
            alerta.Mostrar_Alerta("Aviso", "Debe ingresar la fecha de la visita 1")
            'By Tigrito: Commented 29/05/2013
            'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
            bloquear()
            Exit Sub
        End If
        'Recorremos la grilla (Datos de la primera fecha)
        Dim k, l As Integer
        l = 0
        For k = 0 To gv_Detalle.Rows.Count - 1
            Dim htxtM1 As TextBox = CType(gv_Detalle.Rows(k).FindControl("TextBox1"), TextBox)
            If htxtM1.Text <> "" Then
                l = l + 1
            Else
            End If
        Next
        'Si NO se ingreso ningun dato
        If l = 0 Then
            alerta.Mostrar_Alerta("Aviso", "Debe ingresar un dato de la visita 1")
            carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
            bloquear()
            Exit Sub
        End If
        'Recorremos la grilla (Datos de la segunda fecha)
        Dim x, y As Integer
        y = 0
        For x = 0 To gv_Detalle.Rows.Count - 1
            Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(x).FindControl("TextBox2"), TextBox)
            If htxtM2.Text.Trim <> "" Then
                y = y + 1
            Else
            End If
        Next

        If txt2.Text = "" Then
        Else
            'Si se ingresaron fecha 2 y montos
            If txt2.Text <> "" And y <> 0 Then
                'Si existe fecha 1
                If CStr(ViewState("VSdate1")) <> "" Then
                    If txt2.Text = "" Then   'Si NO se ingresó fecha 2
                        alerta.Mostrar_Alerta("Aviso", "Debe ingresar la fecha de la visita 2")

                        'By Tigrito: Commented 29/05/2013
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))

                        bloquear()
                        Exit Sub
                    End If
                    'Recorremos la grilla (Datos de la segunda fecha)
                    Dim a, b As Integer
                    b = 0
                    For a = 0 To gv_Detalle.Rows.Count - 1
                        Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(a).FindControl("TextBox2"), TextBox)
                        If htxtM2.Text <> "" Then
                            b = b + 1
                        Else
                        End If
                    Next
                    'Si NO se ingreso ningun dato en fecha 2
                    If b = 0 Then
                        alerta.Mostrar_Alerta("Aviso", "Debe ingresar un dato de la visita 2")
                        carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        bloquear()
                        Exit Sub
                    End If
                End If
            End If

        End If

        'Recorremos la grilla (Datos de la tercera fecha)
        Dim r, s As Integer
        For r = 0 To gv_Detalle.Rows.Count - 1
            Dim htxtM3 As TextBox = CType(gv_Detalle.Rows(r).FindControl("TextBox3"), TextBox)
            If htxtM3.Text <> "" Then
                s = s + Convert.ToDecimal(htxtM3.Text)
            Else
            End If
        Next

        If txt3.Text = "" Then
        Else
            'Si se ingresaron fecha 3 y montos
            If txt3.Text <> "" Or s <> 0 Then
                If CStr(ViewState("VSdate2")) <> "" Then
                    'Si existe fecha 2
                    If txt3.Text = "" Then  'Si NO se ingresó fecha 3
                        alerta.Mostrar_Alerta("Aviso", "Debe ingresar la fecha de la visita 3")

                        'By Tigrito: Commented 29/05/2013
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))

                        bloquear()
                        Exit Sub
                    End If
                    'Recorremos la grilla (Datos de la tercera fecha)
                    Dim c, d As Integer
                    d = 0
                    For c = 0 To gv_Detalle.Rows.Count - 1
                        Dim htxtM3 As TextBox = CType(gv_Detalle.Rows(c).FindControl("TextBox3"), TextBox)
                        If htxtM3.Text <> "" Then
                            d = d + 1
                        Else
                        End If
                    Next
                    'Si NO se ingreso ningun dato en fecha 3
                    If d = 0 Then
                        alerta.Mostrar_Alerta("Aviso", "Debe ingresar un dato de la visita 3")
                        carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        bloquear()
                        Exit Sub
                    End If
                End If
            End If

        End If

        'Recorremos la grilla (Datos de la cuarta fecha)
        Dim t, u As Integer
        u = 0
        For t = 0 To gv_Detalle.Rows.Count - 1
            Dim htxtM4 As TextBox = CType(gv_Detalle.Rows(t).FindControl("TextBox4"), TextBox)
            If htxtM4.Text <> "" Then
                u = u + 1
            Else
            End If
        Next

        If txt4.Text = "" Then
        Else

            'Si se ingresaron fecha 4 y montos
            If txt4.Text <> "" Or u <> 0 Then
                'Si  existe fecha 3
                If CStr(ViewState("VSdate3")) <> "" Then
                    'Si NO existe fecha 4
                    If txt4.Text = "" Then
                        alerta.Mostrar_Alerta("Aviso", "Debe ingresar la fecha de la visita 4")

                        'By Tigrito: Commented 29/05/2013
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))

                        bloquear()
                        Exit Sub
                    End If
                    'Recorremos la grilla (Datos de la cuarta fecha)
                    Dim h, f As Integer
                    f = 0
                    For h = 0 To gv_Detalle.Rows.Count - 1
                        Dim htxtM4 As TextBox = CType(gv_Detalle.Rows(h).FindControl("TextBox4"), TextBox)
                        If htxtM4.Text <> "" Then
                            f = f + 1
                        Else
                        End If
                    Next
                    'Si NO se ingreso ningun dato en fecha 4
                    If f = 0 Then
                        alerta.Mostrar_Alerta("Aviso", "Debe ingresar un dato de la visita 4")
                        carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        bloquear()
                        Exit Sub
                    End If

                End If
            End If

        End If

        'Comparamos las fechas
        Dim fec As Boolean = comparefecha()
        If fec = False Then     'Si no coinciden salimos sin guardar
            Exit Sub
        End If

        'Sí es terminado es estado 2 sino 1
        If chkTerminado.Checked = True Then
            ViewState("VSEST") = "2"
        Else : ViewState("VSEST") = "1"

        End If

        If ViewState("VSestado") = "I" Then     'Sí es NUEVO
            Dim i As Integer
            Dim objgen As GeneralBC

            'Recorremos la grilla
            For i = 0 To gv_Detalle.Rows.Count - 1
                objgen = New GeneralBC
                'Capturamos los valores de la fila

                Dim htxtM_Ejec As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBoxEjecM"), TextBox) 'By Tigrito 23/05/2013
                Dim htxtM1 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox1"), TextBox)
                Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox2"), TextBox)
                Dim htxtM3 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox3"), TextBox)
                Dim htxtM4 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox4"), TextBox)
                Dim htxtM5 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox5"), TextBox)
                Dim intMetaAnual As Integer = CInt(gv_Detalle.Rows(i).Cells(2).Text)
                Dim MES As String = gv_Detalle.Rows(i).Cells(5).Text

                If htxtM_Ejec.Text = "" Then
                    htxtM_Ejec.Text = 0
                End If
                If htxtM1.Text = "" Then
                    htxtM1.Text = 0
                End If
                If htxtM2.Text = "" Then
                    htxtM2.Text = 0
                End If
                If htxtM3.Text = "" Then
                    htxtM3.Text = 0
                End If
                If htxtM4.Text = "" Then
                    htxtM4.Text = 0
                End If
                If MES = "&nbsp;" Or MES = "" Then
                    MES = "0"
                End If
                Dim mesb As String
                mesb = CleanInput(MES) 'Limpiamos de caracteres invalidos la cadena MES
                Dim Ejec_M As Double = Convert.ToDouble(htxtM_Ejec.Text)
                Dim MTM1 As Double = Convert.ToDouble(htxtM1.Text)
                Dim MTM2 As Double = Convert.ToDouble(htxtM2.Text)
                Dim MTM3 As Double = Convert.ToDouble(htxtM3.Text)
                Dim MTM4 As Double = Convert.ToDouble(htxtM4.Text)
                Dim MESA As Integer = Convert.ToInt32(mesb)

                Dim ejeM As Double = Ejec_M
                Dim mes1 As Double = MTM1
                Dim mes2 As Double = MTM2
                Dim mes3 As Double = MTM3
                Dim mes4 As Double = MTM4

                Dim Date_1_Aux As String = txt.Text
                Dim Date_2_Aux As String = txt2.Text
                Dim Date_3_Aux As String = txt3.Text
                Dim Date_4_Aux As String = txt4.Text

                'Validamos los montos
                If intMetaAnual < mes1 Or intMetaAnual < mes2 Or intMetaAnual < mes3 Or intMetaAnual < mes4 Then
                    alerta.Mostrar_Alerta("Aviso", "Alguna de las Cantidades de la visita esta superando a su respectiva Meta Anual </br> <font color ='FF0000'>Se han guardado los datos... corrija si lo considera necesario")

                    'CargarGrillaMon(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    bloquear()
                    'Exit Sub
                End If

                If Date_4_Aux <> "" Then
                    If mes4 < mes3 Then     'Si monto 4 es menor que 3 y diferente de cero
                        alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al de la  visita 3 </br> <font color ='FF0000'>CORRIJA</font>")

                        'By Tigrito (01/07/2013): Commented
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        bloquear()
                        'Exit Sub
                    End If
                End If

                If Date_3_Aux <> "" Then
                    If mes3 < mes2 Then     'Si monto 3 es menor que 2 y diferente de cero
                        alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al de la  visita 2 </br> <font color ='FF0000'>CORRIJA</font>")

                        'By Tigrito (01/07/2013): Commented
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        bloquear()
                        'Exit Sub
                    End If
                End If

                If Date_2_Aux <> "" Then
                    If mes2 < mes1 Then     'Si monto 2 es menor que 1 y diferente de cero
                        alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al de la  visita 1 </br> <font color ='FF0000'>CORRIJA</font>")

                        'By Tigrito (01/07/2013): Commented
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        bloquear()
                        'Exit Sub
                    End If
                End If

                If mes1 < ejeM Then     'Si monto 1 es menor que el de Mayo y diferente de cero
                    alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al dato acumulado de mes ANTERIOR </br> <font color ='FF0000'>CORRIJA</font>")

                    'By Tigrito (01/07/2013): Commented
                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    'Exit Sub
                End If

                If mes1 < MESA And mes1 <> "0.0" Then     'Si monto 1 es menor que meta acumulada y diferente de cero
                    alerta.Mostrar_Alerta("Aviso", "El Monto ingresado es Menor al Acumulado")

                    'By Tigrito (01/07/2013): Commented
                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    bloquear()
                    Exit Sub
                End If
            Next
            'Suma los montos por fecha
            sumar()
            'Capturamos los Montos totales de las 4 fechas (visitas)
            Dim TV1 As String = CType(gv_Detalle.FooterRow.FindControl("lbltotal"), Label).Text
            Dim TV2 As String = CType(gv_Detalle.FooterRow.FindControl("lbltotal2"), Label).Text
            Dim TV3 As String = CType(gv_Detalle.FooterRow.FindControl("lbltotal3"), Label).Text
            Dim TV4 As String = CType(gv_Detalle.FooterRow.FindControl("lbltotal4"), Label).Text

            'Recorremos la grilla
            For i = 0 To gv_Detalle.Rows.Count - 1
                Dim strCodigo As Integer
                objgen = New GeneralBC
                'Generamos el codigo del nuevo POA_FINANCIERO_PERSONA
                strCodigo = objgen.GenerarCodigoNumero("POA_FINANCIERO_PERSONA", "ID_POA_FINACIERO_PERSONA")
                'Capturamos los valores de la fila i
                Dim htxtActfin As HiddenField = CType(gv_Detalle.Rows(i).FindControl("hfActfin"), HiddenField)
                Dim htxtPlan As HiddenField = CType(gv_Detalle.Rows(i).FindControl("hfPlan"), HiddenField)

                Dim htxtM_Ejec As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBoxEjecM"), TextBox)
                Dim htxtM1 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox1"), TextBox)
                Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox2"), TextBox)
                Dim htxtM3 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox3"), TextBox)
                Dim htxtM4 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox4"), TextBox)
                Dim htxtM5 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox5"), TextBox)
                Dim MES As String = gv_Detalle.Rows(i).Cells(3).Text

                If htxtM_Ejec.Text = "" Then
                    htxtM_Ejec.Text = 0
                End If
                If htxtM1.Text = "" Then
                    htxtM1.Text = 0
                End If
                If htxtM2.Text = "" Then
                    htxtM2.Text = 0
                End If
                If htxtM3.Text = "" Then
                    htxtM3.Text = 0
                End If
                If htxtM4.Text = "" Then
                    htxtM4.Text = 0
                End If
                If MES = "&nbsp;" Then
                    MES = "0"
                End If

                'Limpiamos valores invalidos de cadena MES  
                Dim mesb As String
                mesb = CleanInput(MES)

                Dim IDPOACT As Integer = CInt(htxtActfin.Value)
                Dim IDPLAN As Integer = CInt(htxtPlan.Value)

                Dim Ejec_Mes As Decimal = Convert.ToDecimal(htxtM_Ejec.Text)
                Dim MTM1 As Decimal = Convert.ToDecimal(htxtM1.Text)
                Dim MTM2 As Decimal = Convert.ToDecimal(htxtM2.Text)
                Dim MTM3 As Decimal = Convert.ToDecimal(htxtM3.Text)
                Dim MTM4 As Decimal = Convert.ToDecimal(htxtM4.Text)

                Dim OB As String = htxtM5.Text
                Dim F1 As String = txt.Text
                Dim F2 As String = txt2.Text
                Dim F3 As String = txt3.Text
                Dim F4 As String = txt4.Text

                Dim Ejec_Mes_Aux As String = Ejec_Mes.ToString
                Dim MTMa As String = MTM1.ToString
                Dim MTMb As String = MTM2.ToString
                Dim MTMc As String = MTM3.ToString
                Dim MTMd As String = MTM4.ToString

                'Insertamos los datos de la fila i
                insertar_financiero_per(IDPLAN, IDPOACT, strCodigo, Ejec_Mes_Aux.Replace(".", ","), MTMa.Replace(".", ","), MTMb.Replace(".", ","), MTMc.Replace(".", ","), MTMd.Replace(".", ","), OB, F1, F2, F3, F4, ViewState("VSEST"), TV1.Replace(".", ","), TV2.Replace(".", ","), TV3.Replace(".", ","), TV4.Replace(".", ","), ViewState("VersionPoaVigente"))
                'insertar_financiero_per(IDPLAN, IDPOACT, strCodigo, Ejec_Mes_Aux.Replace(",", "."), MTMa.Replace(",", "."), MTMb.Replace(",", "."), MTMc.Replace(",", "."), MTMd.Replace(",", "."), OB, F1, F2, F3, F4, ViewState("VSEST"), TV1.Replace(",", "."), TV2.Replace(",", "."), TV3.Replace(",", "."), TV4.Replace(",", "."))

                'Cambiamos el estado a EDICION
                ViewState("VSestado") = "E"

                alerta.Mostrar_Alerta("Aviso", "Los Datos se Guardaron exitosamente")
                bloquear()
            Next

            'By Tigrito (16/08/2013): Luego de la inserción... ahora VersionPoaAvanceFin toma el valor de VersionPoaVigente
            'Pues luego de terminar con las inserciones la Grilla a mostrar se cargará con VersionPoaAvanceFin...
            ViewState("VersionPoaAvanceFin") = ViewState("VersionPoaVigente")
            'NUEVO ELLANOS 19-12-13
            carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
            bloquear()
            If ViewState("VSEST") = "2" Then
                btn_guardar.Visible = False
            End If

            alerta.Mostrar_Alerta("Aviso", "Los Datos se guardaron exitosamente")

        Else        'Si es EDICION
            Dim i As Integer
            For i = 0 To gv_Detalle.Rows.Count - 1
                'Capturamos los valores de la fila i
                Dim htxtM_Ejec As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBoxEjecM"), TextBox)
                Dim htxtV1 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox1"), TextBox)
                Dim htxtV2 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox2"), TextBox)
                Dim htxtV3 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox3"), TextBox)
                Dim htxtV4 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox4"), TextBox)
                Dim intMetaAnual As Integer = CInt(gv_Detalle.Rows(i).Cells(2).Text)
                Dim MES As String = gv_Detalle.Rows(i).Cells(5).Text

                If htxtM_Ejec.Text = "" Then
                    htxtM_Ejec.Text = 0
                End If
                If htxtV1.Text = "" Then
                    htxtV1.Text = 0
                End If
                If htxtV2.Text = "" Then
                    htxtV2.Text = 0
                End If
                If htxtV3.Text = "" Then
                    htxtV3.Text = 0
                End If
                If htxtV4.Text = "" Then
                    htxtV4.Text = 0
                End If
                If MES = "&nbsp;" Or MES = "" Then
                    MES = "0"
                End If

                'Limpiamos valores invalidos de cadena MES  
                Dim mesb As String
                mesb = CleanInput(MES)

                Dim Ejec_M As Double = Convert.ToDouble(htxtM_Ejec.Text)
                Dim strV1 As Double = Convert.ToDouble(htxtV1.Text)
                Dim strV2 As Double = Convert.ToDouble(htxtV2.Text)
                Dim strV3 As Double = Convert.ToDouble(htxtV3.Text)
                Dim strV4 As Double = Convert.ToDouble(htxtV4.Text)

                Dim Ejec_Mayo_Aux As Double = Ejec_M
                Dim mes1 As Double = strV1
                Dim mes2 As Double = strV2
                Dim mes3 As Double = strV3
                Dim mes4 As Double = strV4


                Dim MESA As Integer = Convert.ToInt32(mesb)

                Dim Fecha_1_Aux As String = txt.Text
                Dim Fecha_2_Aux As String = txt2.Text
                Dim Fecha_3_Aux As String = txt3.Text
                Dim Fecha_4_Aux As String = txt4.Text

                'Validamos los montos
                If intMetaAnual < mes1 Or intMetaAnual < mes2 Or intMetaAnual < mes3 Or intMetaAnual < mes4 Then
                    alerta.Mostrar_Alerta("Aviso", "Alguna de las Cantidades de la visita esta superando a su respectiva Meta Anual </br> <font color ='FF0000'>Se han guardado los datos... corrija si lo considera necesario")

                    'CargarGrillaMon(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    bloquear()
                    'Exit Sub
                End If

                If Fecha_4_Aux <> "" Then
                    If mes4 < mes3 Then     'Si monto 4 es menor que 3 y diferente de cero
                        alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al de la  visita 3 </br> <font color ='FF0000'>CORRIJA</font>")

                        'By Tigrito (01/07/2013): Commented
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        Exit Sub
                    End If
                End If

                If Fecha_3_Aux <> "" Then
                    If mes3 < mes2 Then     'Si monto 3 es menor que 2 y diferente de cero
                        alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al de la  visita 2 </br> <font color ='FF0000'>CORRIJA</font>")

                        'By Tigrito (01/07/2013): Commented
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        'Exit Sub
                    End If
                End If

                If Fecha_2_Aux <> "" Then
                    If mes2 < mes1 Then     'Si monto 2 es menor que 1 y diferente de cero
                        alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al de la  visita 1 </br> <font color ='FF0000'>CORRIJA</font>")

                        'By Tigrito (01/07/2013): Commented
                        'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                        'Exit Sub
                    End If
                End If

                If mes1 < Ejec_Mayo_Aux Then     'Si monto 2 es menor que 1 y diferente de cero
                    alerta.Mostrar_Alerta("Aviso", "Algunas de las cantidades ingresadas son Menores al dato acumulado del mes ANTERIOR </br> <font color ='FF0000'>CORRIJA</font>")

                    'By Tigrito (01/07/2013): Commented
                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    'Exit Sub
                End If

                If mes1 < MESA And mes1 <> "0.0" Then     'Si monto 1 es menor que meta acumulada y diferente de cero
                    alerta.Mostrar_Alerta("Aviso", "El Monto ingresado es Menor al Acumulado")
                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    Exit Sub
                End If
            Next
            Dim stsum As Integer = 0
            Dim TV1 As String
            Dim TV2 As String
            Dim TV3 As String
            Dim TV4 As String
            If stsum = 0 Then
                'Suma los montos por fecha
                sumar()
                stsum = 1
            End If
            'Capturamos los Montos totales de las 4 fechas (visitas)
            TV1 = CType(gv_Detalle.FooterRow.FindControl("lbltotal"), Label).Text
            TV2 = CType(gv_Detalle.FooterRow.FindControl("lbltotal2"), Label).Text
            TV3 = CType(gv_Detalle.FooterRow.FindControl("lbltotal3"), Label).Text
            TV4 = CType(gv_Detalle.FooterRow.FindControl("lbltotal4"), Label).Text
            'Recorremos la grilla
            For i = 0 To gv_Detalle.Rows.Count - 1
                'Capturamos los valores de la fila i
                Dim htxtCodigo As HiddenField = CType(gv_Detalle.Rows(i).FindControl("hfCodigo"), HiddenField)

                Dim htxtM_Ejec As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBoxEjecM"), TextBox)
                Dim htxtV1 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox1"), TextBox)
                Dim htxtV2 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox2"), TextBox)
                Dim htxtV3 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox3"), TextBox)
                Dim htxtV4 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox4"), TextBox)
                Dim htxtV5 As TextBox = CType(gv_Detalle.Rows(i).FindControl("TextBox5"), TextBox)

                Dim MES As String = gv_Detalle.Rows(i).Cells(5).Text

                If htxtM_Ejec.Text = "" Then
                    htxtM_Ejec.Text = 0
                End If
                If htxtV1.Text = "" Then
                    htxtV1.Text = 0
                End If
                If htxtV2.Text = "" Then
                    htxtV2.Text = 0
                End If
                If htxtV3.Text = "" Then
                    htxtV3.Text = 0
                End If
                If htxtV4.Text = "" Then
                    htxtV4.Text = 0
                End If
                If MES = "&nbsp;" Then
                    MES = "0"
                End If
                'Limpiamos valores invalidos de cadena MES  
                Dim mesb As String
                mesb = CleanInput(MES)
                Dim strCodigo As String = htxtCodigo.Value.ToString

                Dim strEjecM_Aux As Decimal = Convert.ToDecimal(htxtM_Ejec.Text)

                Dim strV1 As Decimal = Convert.ToDecimal(htxtV1.Text)
                Dim strV2 As Decimal = Convert.ToDecimal(htxtV2.Text)
                Dim strV3 As Decimal = Convert.ToDecimal(htxtV3.Text)
                Dim strV4 As Decimal = Convert.ToDecimal(htxtV4.Text)

                Dim OB As String = htxtV5.Text.ToString
                Dim F1 As String = txt.Text
                Dim F2 As String = txt2.Text
                Dim F3 As String = txt3.Text
                Dim F4 As String = txt4.Text

                Dim strEjecM As String = strEjecM_Aux.ToString
                Dim strVa As String = strV1.ToString
                Dim strVb As String = strV2.ToString
                Dim strVc As String = strV3.ToString
                Dim strVd As String = strV4.ToString
                'Editamos los datos de la fila i
                edicion_finaciero(strEjecM.Replace(".", ","), strVa.Replace(".", ","), strVb.Replace(".", ","), strVc.Replace(".", ","), strVd.Replace(".", ","), strCodigo, OB, F1, F2, F3, F4, ViewState("VSEST"), TV1.Replace(".", ","), TV2.Replace(".", ","), TV3.Replace(".", ","), TV4.Replace(".", ","), ViewState("VersionPoaVigente"))
                'edicion_finaciero(strEjecM.Replace(",", "."), strVa.Replace(",", "."), strVb.Replace(",", "."), strVc.Replace(",", "."), strVd.Replace(",", "."), strCodigo, OB, F1, F2, F3, F4, ViewState("VSEST"), TV1.Replace(",", "."), TV2.Replace(",", "."), TV3.Replace(",", "."), TV4.Replace(",", "."))

                alerta.Mostrar_Alerta("Aviso", "Los Datos se Guardaron exitosamente")
            Next
            'Si es terminado seleccionamos checkbox y ocultamos boton Guardar
            If ViewState("VSEST") = "2" Then
                btn_guardar.Visible = False
                chkTerminado.Checked = True
            End If

            'Cargamos la grilla 
            carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
            bloquear()
        End If
        bloquear()
    End Sub

    'Salir
    Protected Sub btn_salir_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_salir.Click
        Response.Redirect("ListaAvanceFisiFinMensual.aspx")
    End Sub

    'By Tigrito (04/07/2013): gv_Detalle es la grilla financiera de la página aspx
    Protected Sub gv_Detalle_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gv_Detalle.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            'Dim product As Northwind.ProductsRow = CType(CType(e.Row.DataItem, DataRowView).Row, Northwind.ProductsRow)

            Dim Aux1 As Decimal = 0
            Dim Aux2 As Decimal = 0
            Dim Aux3 As Decimal = 0
            Dim Aux4 As Decimal = 0
            Dim Aux5 As Decimal = 0
            Dim Aux6 As Decimal = 0
            Dim Aux7 As Decimal = 0
            Dim Aux8 As Decimal = 0

            Dim AuxEjecMes As Decimal = 0
            Dim AuxEjecMesAcum As Decimal = 0

            If e.Row.Cells(2).Text.ToString = "" Or e.Row.Cells(2).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(2).Text.ToString) Then
                Aux1 = 0
            Else
                Aux1 = Convert.ToDecimal(e.Row.Cells(2).Text.ToString)
            End If

            If e.Row.Cells(3).Text.ToString = "" Or e.Row.Cells(3).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(3).Text.ToString) Then
                Aux2 = 0
            Else
                Aux2 = Convert.ToDecimal(e.Row.Cells(3).Text.ToString)
            End If

            If e.Row.Cells(4).Text.ToString = "" Or e.Row.Cells(4).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(4).Text.ToString) Then
                Aux3 = 0
            Else
                Aux3 = Convert.ToDecimal(e.Row.Cells(4).Text.ToString)
            End If

            'Para los calculos de las columnas auxiliares
            If e.Row.Cells(10).Text.ToString = "" Or e.Row.Cells(10).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(10).Text.ToString) Then
                AuxEjecMes = 0
            Else
                AuxEjecMes = Convert.ToDecimal(e.Row.Cells(10).Text.ToString)
            End If
            If e.Row.Cells(12).Text.ToString = "" Or e.Row.Cells(12).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(12).Text.ToString) Then
                AuxEjecMesAcum = 0
            Else
                AuxEjecMesAcum = Convert.ToDecimal(e.Row.Cells(12).Text.ToString)
            End If


            'Variables auxiliares para las visitas
            Dim htxtMayo As TextBox
            Dim htxtV1 As TextBox
            Dim htxtV2 As TextBox
            Dim htxtV3 As TextBox
            Dim htxtV4 As TextBox

            'Para las columnas auxiliares
            Dim htxtAuxEjecMes As Label
            Dim htxtAuxEjecMesAcum As Label

            htxtMayo = CType((e.Row.Cells(5).FindControl("TextBoxEjecM")), TextBox)
            htxtV1 = CType((e.Row.Cells(6).FindControl("TextBox1")), TextBox)
            htxtV2 = CType((e.Row.Cells(7).FindControl("TextBox2")), TextBox)
            htxtV3 = CType((e.Row.Cells(8).FindControl("TextBox3")), TextBox)
            htxtV4 = CType((e.Row.Cells(9).FindControl("TextBox4")), TextBox)

            htxtAuxEjecMes = CType((e.Row.Cells(10).FindControl("Labelx")), Label)
            htxtAuxEjecMesAcum = CType((e.Row.Cells(12).FindControl("Labelx3")), Label)

            'Esto es solo para ejecutado acumulado Mayo
            If htxtMayo.Text.ToString = "" Or htxtMayo.Text.ToString = "" Or htxtMayo.Text = "&nbsp;" Or IsDBNull(htxtMayo.Text.ToString) Then
                Aux4 = 0
            Else
                Aux4 = Convert.ToDecimal(htxtMayo.Text.ToString)
            End If
            htxtMayo.Text = Format(CDec(htxtMayo.Text), "#,##0.00")
            'Para las visitas
            If htxtV1.Text.ToString = "" Or htxtV1.Text = "&nbsp;" Or IsDBNull(htxtV1.Text.ToString) Then
                Aux5 = 0
            Else
                Aux5 = Convert.ToDecimal(htxtV1.Text.ToString)
            End If
            htxtV1.Text = Format(CDec(htxtV1.Text), "#,##0.00")
            If htxtV2.Text.ToString = "" Or htxtV2.Text.ToString = "" Or htxtV2.Text = "&nbsp;" Or IsDBNull(htxtV2.Text.ToString) Then
                Aux6 = 0
            Else
                Aux6 = Convert.ToDecimal(htxtV2.Text.ToString)
            End If
            htxtV2.Text = Format(CDec(htxtV2.Text), "#,##0.00")
            If htxtV3.Text.ToString = "" Or htxtV3.Text.ToString = "" Or htxtV3.Text = "&nbsp;" Or IsDBNull(htxtV3.Text.ToString) Then
                Aux7 = 0
            Else
                Aux7 = Convert.ToDecimal(htxtV3.Text.ToString)
            End If
            htxtV3.Text = Format(CDec(htxtV3.Text), "#,##0.00")
            If htxtV4.Text.ToString = "" Or htxtV4.Text.ToString = "" Or htxtV4.Text = "&nbsp;" Or IsDBNull(htxtV4.Text.ToString) Then
                Aux8 = 0
            Else
                Aux8 = Convert.ToDecimal(htxtV4.Text.ToString)
            End If
            htxtV4.Text = Format(CDec(htxtV4.Text), "#,##0.00")
            'Para las columnas auxiliares
            If htxtAuxEjecMes.Text.ToString = "" Or htxtAuxEjecMes.Text.ToString = "" Or htxtAuxEjecMes.Text = "&nbsp;" Or IsDBNull(htxtAuxEjecMes.Text.ToString) Then
                AuxEjecMes = 0
            Else
                AuxEjecMes = Convert.ToDecimal(htxtAuxEjecMes.Text.ToString)
            End If
            If htxtAuxEjecMesAcum.Text.ToString = "" Or htxtAuxEjecMesAcum.Text.ToString = "" Or htxtAuxEjecMesAcum.Text = "&nbsp;" Or IsDBNull(htxtAuxEjecMesAcum.Text.ToString) Then
                AuxEjecMesAcum = 0
            Else
                AuxEjecMesAcum = Convert.ToDecimal(htxtAuxEjecMesAcum.Text.ToString)
            End If

            _totalMetaAnual += Aux1
            _totalMetaProgMensual += Aux2
            _totalMetaProgAcum += Aux3

            _totalAcumEjecMayo_detalle += Aux4
            _totalVista_1_detalle += Aux5
            _totalVista_2_detalle += Aux6
            _totalVista_3_detalle += Aux7
            _totalVista_4_detalle += Aux8

            'Para las columnas auxiliares
            _totalEjecMes_detalle += AuxEjecMes
            _totalEjecMesAcum_detalle += AuxEjecMesAcum


            '----------------
            If AuxEjecMes < 0 Then
                e.Row.Cells(10).ForeColor = Drawing.Color.Red
                e.Row.Cells(11).ForeColor = Drawing.Color.Red
            End If
            If AuxEjecMesAcum < 0 Then
                e.Row.Cells(12).ForeColor = Drawing.Color.Red
                e.Row.Cells(13).ForeColor = Drawing.Color.Red
            End If



        ElseIf e.Row.RowType = DataControlRowType.Footer Then
            e.Row.Cells(1).Text = "TOTALES"

            e.Row.Cells(2).Text = (_totalMetaAnual).ToString("#,000.0")
            e.Row.Cells(3).Text = (_totalMetaProgMensual).ToString("#,000.0")
            e.Row.Cells(4).Text = (_totalMetaProgAcum).ToString("#,000.0")

            e.Row.Cells(5).Text = (_totalAcumEjecMayo_detalle).ToString("#,000.0")
            e.Row.Cells(6).Text = (_totalVista_1_detalle).ToString("#,000.0")
            e.Row.Cells(7).Text = (_totalVista_2_detalle).ToString("#,000.0")
            e.Row.Cells(8).Text = (_totalVista_3_detalle).ToString("#,000.0")
            e.Row.Cells(9).Text = (_totalVista_4_detalle).ToString("#,000.0")

            'Para las columnas auxiliares
            e.Row.Cells(10).Text = (_totalEjecMes_detalle).ToString("#,000.0")
            e.Row.Cells(11).Text = (DivPorCero(_totalEjecMes_detalle, _totalMetaProgMensual)).ToString("#,0.0%")
            e.Row.Cells(12).Text = (_totalEjecMesAcum_detalle).ToString("#,000.0")
            e.Row.Cells(13).Text = (DivPorCero(_totalEjecMesAcum_detalle, _totalMetaProgAcum)).ToString("#,0.0%")

            '----------------
            If _totalEjecMes_detalle < 0 Then
                e.Row.Cells(10).ForeColor = Drawing.Color.Red
                e.Row.Cells(11).ForeColor = Drawing.Color.Red
            End If
            If _totalEjecMesAcum_detalle < 0 Then
                e.Row.Cells(12).ForeColor = Drawing.Color.Red
                e.Row.Cells(13).ForeColor = Drawing.Color.Red
            End If


        End If
    End Sub

    Protected Sub gv_doc_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gv_doc.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            'Dim product As Northwind.ProductsRow = CType(CType(e.Row.DataItem, DataRowView).Row, Northwind.ProductsRow)

            Dim Aux1 As Decimal = 0
            Dim Aux2 As Decimal = 0
            Dim Aux3 As Decimal = 0
            Dim Aux4 As Decimal = 0
            Dim Aux5 As Decimal = 0
            Dim Aux6 As Decimal = 0
            Dim Aux7 As Decimal = 0

            If e.Row.Cells(2).Text.ToString = "" Or e.Row.Cells(2).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(2).Text.ToString) Then
                Aux1 = 0
            Else
                Aux1 = Convert.ToDecimal(e.Row.Cells(2).Text.ToString)
            End If

            If e.Row.Cells(3).Text.ToString = "" Or e.Row.Cells(3).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(3).Text.ToString) Then
                Aux2 = 0
            Else
                Aux2 = Convert.ToDecimal(e.Row.Cells(3).Text.ToString)
            End If

            If e.Row.Cells(4).Text.ToString = "" Or e.Row.Cells(4).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(4).Text.ToString) Then
                Aux3 = 0
            Else
                Aux3 = Convert.ToDecimal(e.Row.Cells(4).Text.ToString)
            End If

            'Variables auxiliares para las visitas
            Dim htxtV1 As Label
            Dim htxtV2 As Label
            Dim htxtV3 As Label
            Dim htxtV4 As Label

            htxtV1 = CType((e.Row.Cells(5).FindControl("TextBox1")), Label)
            htxtV2 = CType((e.Row.Cells(6).FindControl("TextBox2")), Label)
            htxtV3 = CType((e.Row.Cells(7).FindControl("TextBox3")), Label)
            htxtV4 = CType((e.Row.Cells(8).FindControl("TextBox4")), Label)

            'Para las visitas
            If htxtV1.Text.ToString = "" Or htxtV1.Text.ToString = "" Or htxtV1.Text = "&nbsp;" Or IsDBNull(htxtV1.Text.ToString) Then
                Aux4 = 0
            Else
                Aux4 = Convert.ToDecimal(htxtV1.Text.ToString)
            End If

            If htxtV2.Text.ToString = "" Or htxtV2.Text.ToString = "" Or htxtV2.Text = "&nbsp;" Or IsDBNull(htxtV2.Text.ToString) Then
                Aux5 = 0
            Else
                Aux5 = Convert.ToDecimal(htxtV2.Text.ToString)
            End If

            If htxtV3.Text.ToString = "" Or htxtV3.Text.ToString = "" Or htxtV3.Text = "&nbsp;" Or IsDBNull(htxtV3.Text.ToString) Then
                Aux6 = 0
            Else
                Aux6 = Convert.ToDecimal(htxtV3.Text.ToString)
            End If

            If htxtV4.Text.ToString = "" Or htxtV4.Text.ToString = "" Or htxtV4.Text = "&nbsp;" Or IsDBNull(htxtV4.Text.ToString) Then
                Aux7 = 0
            Else
                Aux7 = Convert.ToDecimal(htxtV4.Text.ToString)
            End If


            'If Not e.Row.Cells(2).Text Then
            _totalMetaAnual_doc += Aux1
            'End If
            'If Not e.Row.Cells(3).Text Then
            _totalMetaProgMensual_doc += Aux2
            'End If
            'If Not e.Row.Cells(4).Text Then
            _totalMetaProgAcum_doc += Aux3
            'End If

            'Para las visitas
            _totalVista_1_doc += Aux4
            _totalVista_2_doc += Aux5
            _totalVista_3_doc += Aux6
            _totalVista_4_doc += Aux7


        ElseIf e.Row.RowType = DataControlRowType.Footer Then
            e.Row.Cells(1).Text = "TOTALES"

            'e.Row.Cells(2).Text = (_totalMetaAnual / 2).ToString("#,000.0")
            'e.Row.Cells(3).Text = (_totalMetaProgMensual / 2).ToString("#,000.0")
            'e.Row.Cells(4).Text = (_totalMetaProgAcum / 2).ToString("#,000.0")

            e.Row.Cells(2).Text = (_totalMetaAnual_doc).ToString("#,0.0")
            e.Row.Cells(3).Text = (_totalMetaProgMensual_doc).ToString("#,0.0")
            e.Row.Cells(4).Text = (_totalMetaProgAcum_doc).ToString("#,0.0")

            'Para las visitas
            e.Row.Cells(5).Text = (_totalVista_1_doc).ToString("#,0.0")
            e.Row.Cells(6).Text = (_totalVista_2_doc).ToString("#,0.0")
            e.Row.Cells(7).Text = (_totalVista_3_doc).ToString("#,0.0")
            e.Row.Cells(8).Text = (_totalVista_4_doc).ToString("#,0.0")


        End If
    End Sub

    Protected Sub gv_formato_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gv_formato.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            'Dim product As Northwind.ProductsRow = CType(CType(e.Row.DataItem, DataRowView).Row, Northwind.ProductsRow)

            Dim Aux1 As Decimal = 0
            Dim Aux2 As Decimal = 0
            Dim Aux3 As Decimal = 0
            Dim Aux4 As Decimal = 0
            Dim Aux5 As Decimal = 0
            Dim Aux6 As Decimal = 0
            Dim Aux7 As Decimal = 0
            Dim Aux8 As Decimal = 0

            If e.Row.Cells(2).Text.ToString = "" Or e.Row.Cells(2).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(2).Text.ToString) Then
                Aux1 = 0
            Else
                Aux1 = Convert.ToDecimal(e.Row.Cells(2).Text.ToString)
            End If

            If e.Row.Cells(3).Text.ToString = "" Or e.Row.Cells(3).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(3).Text.ToString) Then
                Aux2 = 0
            Else
                Aux2 = Convert.ToDecimal(e.Row.Cells(3).Text.ToString)
            End If

            If e.Row.Cells(4).Text.ToString = "" Or e.Row.Cells(4).Text.ToString = "&nbsp;" Or IsDBNull(e.Row.Cells(4).Text.ToString) Then
                Aux3 = 0
            Else
                Aux3 = Convert.ToDecimal(e.Row.Cells(4).Text.ToString)
            End If

            'Variables auxiliares para las visitas
            Dim htxtV1 As Label
            Dim htxtV2 As Label
            Dim htxtV3 As Label
            Dim htxtV4 As Label

            htxtV1 = CType((e.Row.Cells(5).FindControl("TextBox1")), Label)
            htxtV2 = CType((e.Row.Cells(6).FindControl("TextBox2")), Label)
            htxtV3 = CType((e.Row.Cells(7).FindControl("TextBox3")), Label)
            htxtV4 = CType((e.Row.Cells(8).FindControl("TextBox4")), Label)



            'Para las visitas
            If htxtV1.Text.ToString = "" Or htxtV1.Text.ToString = "" Or htxtV1.Text = "&nbsp;" Or IsDBNull(htxtV1.Text.ToString) Then
                Aux4 = 0
            Else
                Aux4 = Convert.ToDecimal(htxtV1.Text.ToString)
            End If

            If htxtV2.Text.ToString = "" Or htxtV2.Text.ToString = "" Or htxtV2.Text = "&nbsp;" Or IsDBNull(htxtV2.Text.ToString) Then
                Aux5 = 0
            Else
                Aux5 = Convert.ToDecimal(htxtV2.Text.ToString)
            End If

            If htxtV3.Text.ToString = "" Or htxtV3.Text.ToString = "" Or htxtV3.Text = "&nbsp;" Or IsDBNull(htxtV3.Text.ToString) Then
                Aux6 = 0
            Else
                Aux6 = Convert.ToDecimal(htxtV3.Text.ToString)
            End If

            If htxtV4.Text.ToString = "" Or htxtV4.Text.ToString = "" Or htxtV4.Text = "&nbsp;" Or IsDBNull(htxtV4.Text.ToString) Then
                Aux7 = 0
            Else
                Aux7 = Convert.ToDecimal(htxtV4.Text.ToString)
            End If


            'If Not e.Row.Cells(2).Text Then
            _totalMetaAnual_formato += Aux1
            'End If
            'If Not e.Row.Cells(3).Text Then
            _totalMetaProgMensual_formato += Aux2
            'End If
            'If Not e.Row.Cells(4).Text Then
            _totalMetaProgAcum_formato += Aux3
            'End If

            'Para las visitas
            _totalVista_1_formato += Aux4
            _totalVista_2_formato += Aux5
            _totalVista_3_formato += Aux6
            _totalVista_4_formato += Aux7


        ElseIf e.Row.RowType = DataControlRowType.Footer Then
            e.Row.Cells(1).Text = "TOTALES"

            'e.Row.Cells(2).Text = (_totalMetaAnual / 2).ToString("#,000.0")
            'e.Row.Cells(3).Text = (_totalMetaProgMensual / 2).ToString("#,000.0")
            'e.Row.Cells(4).Text = (_totalMetaProgAcum / 2).ToString("#,000.0")

            e.Row.Cells(2).Text = (_totalMetaAnual_formato).ToString("#,0.0")
            e.Row.Cells(3).Text = (_totalMetaProgMensual_formato).ToString("#,0.0")
            e.Row.Cells(4).Text = (_totalMetaProgAcum_formato).ToString("#,0.0")

            'Para las visitas
            'By Tigrito (03/07/2013): No show because this format is empty
            'e.Row.Cells(5).Text = (_totalVista_1_formato).ToString("#,0.0")
            'e.Row.Cells(6).Text = (_totalVista_2_formato).ToString("#,0.0")
            'e.Row.Cells(7).Text = (_totalVista_3_formato).ToString("#,0.0")
            'e.Row.Cells(8).Text = (_totalVista_4_formato).ToString("#,0.0")


        End If
    End Sub

    'Suma
    Protected Sub btn_calcu_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_calcu.Click
        sumar()
    End Sub

#End Region

#Region "PROCEDIMIENTOS"

    Public Sub carga_grilla(ByVal POA As String, ByVal periodo As String)
        ViewState("VSNUMEROG") = verifica_accion(POA, periodo) 'Verifica si existe datos en Poa_Financiero_Persona
        If ViewState("VSNUMEROG") = 0 Then
            ViewState("VSestado") = "I" 'Insertar
        Else
            ViewState("VSestado") = "E" 'Editar
        End If
        ViewState("VSinstruccion") = "A"
        ViewState("VSdate1") = ""
        ViewState("VSdate2") = ""
        ViewState("VSdate3") = ""
        ViewState("VSdate4") = ""

        If ViewState("VSestado") = "I" Then 'Insertar
            Dim objMonitoreoBC As FinancieroBC = New FinancieroBC
            Dim dtMonitoreo As DataTable
            dtMonitoreo = objMonitoreoBC.carga_grillafinanciero(POA, periodo, ViewState("VersionPoaVigente")) 'Obtiene el Poa_Actividad_Financiera para el POA 
            If dtMonitoreo.Rows.Count = 0 Then
                ViewState("VSinstruccion") = "s"
                Exit Sub
            End If
            ViewState("Datos") = dtMonitoreo
            'Cargamos la grilla
            gv_Detalle.DataSource = dtMonitoreo
            gv_Detalle.DataBind()
            gv_formato.DataSource = dtMonitoreo
            gv_formato.DataBind()
            'Capturamos las fechas de visitas y el estado
            If IsDBNull(dtMonitoreo.Rows(0).Item("FECHA_VISITA1")) Then
                ViewState("VSdate1") = ""
            Else
                ViewState("VSdate1") = dtMonitoreo.Rows(0).Item("FECHA_VISITA1")
            End If
            If IsDBNull(dtMonitoreo.Rows(0).Item("FECHA_VISITA2")) Then
                ViewState("VSdate2") = ""
            Else
                ViewState("VSdate2") = dtMonitoreo.Rows(0).Item("FECHA_VISITA2")
            End If
            If IsDBNull(dtMonitoreo.Rows(0).Item("FECHA_VISITA3")) Then
                ViewState("VSdate3") = ""
            Else
                ViewState("VSdate3") = dtMonitoreo.Rows(0).Item("FECHA_VISITA3")
            End If
            If IsDBNull(dtMonitoreo.Rows(0).Item("FECHA_VISITA4")) Then
                ViewState("VSdate4") = ""
            Else
                ViewState("VSdate4") = dtMonitoreo.Rows(0).Item("FECHA_VISITA4")
            End If
            If IsDBNull(dtMonitoreo.Rows(0).Item("ESTADO")) Then
                ViewState("VSEST") = "1"
            Else
                ViewState("VSEST") = dtMonitoreo.Rows(0).Item("ESTADO")
            End If
            'Llenamos las fechas
            txt.Text = ViewState("VSdate1")
            txt2.Text = ViewState("VSdate2")
            txt3.Text = ViewState("VSdate3")
            txt4.Text = ViewState("VSdate4")
        Else
            ViewState("VSestado") = "E" 'Editar
            Dim objFinancieroBC As FinancieroBC = New FinancieroBC
            Dim dtFinancieroBC As DataTable

            'Cargamos las actividades financieras de edicion y lo cargamos con la versión de POA con la que se creo
            dtFinancieroBC = objFinancieroBC.carga_financiero_ed(POA, periodo, ViewState("VersionPoaAvanceFin"))
            ViewState("Datos") = dtFinancieroBC
            Dim E As Integer = dtFinancieroBC.Rows.Count 'Capturamos el numero de filas
            If E = 0 Then ' si no hay datos 
                ViewState("VSFILAS") = "NULO"
                ViewState("VSsum1") = "v"
                gv_Detalle.DataSource = dtFinancieroBC
                gv_Detalle.DataBind()
                gv_formato.DataSource = dtFinancieroBC
                gv_formato.DataBind()
                gv_doc.DataSource = dtFinancieroBC
                gv_doc.DataBind()
                alerta.Mostrar_Alerta("Error", "El POA no cuenta con plan de Trabajo para el presente Mes")
                txt.Text = ""
                txt2.Text = ""
                txt3.Text = ""
                txt4.Text = ""
                btn_guardar.Visible = False
                btn_calcu.Visible = False
            Else ' si hay datos
                ViewState("VSsum1") = ""
                ViewState("VSFILAS") = "NULO1"
                'llenamos la grilla
                gv_Detalle.DataSource = dtFinancieroBC
                gv_Detalle.DataBind()
                gv_formato.DataSource = dtFinancieroBC
                gv_formato.DataBind()
                gv_doc.DataSource = dtFinancieroBC
                gv_doc.DataBind()
                'Capturamos las fechas y el estado
                If IsDBNull(dtFinancieroBC.Rows(0).Item("FECHA_VISITA1")) Then
                    ViewState("VSdate1") = ""
                Else
                    ViewState("VSdate1") = dtFinancieroBC.Rows(0).Item("FECHA_VISITA1")
                End If
                If IsDBNull(dtFinancieroBC.Rows(0).Item("FECHA_VISITA2")) Then
                    ViewState("VSdate2") = ""
                Else
                    ViewState("VSdate2") = dtFinancieroBC.Rows(0).Item("FECHA_VISITA2")
                End If
                If IsDBNull(dtFinancieroBC.Rows(0).Item("FECHA_VISITA3")) Then
                    ViewState("VSdate3") = ""
                Else
                    ViewState("VSdate3") = dtFinancieroBC.Rows(0).Item("FECHA_VISITA3")
                End If
                If IsDBNull(dtFinancieroBC.Rows(0).Item("FECHA_VISITA4")) Then
                    ViewState("VSdate4") = ""
                Else
                    ViewState("VSdate4") = dtFinancieroBC.Rows(0).Item("FECHA_VISITA4")
                End If
                If IsDBNull(dtFinancieroBC.Rows(0).Item("ESTADO")) Then
                    ViewState("VSEST") = "1"
                Else
                    ViewState("VSEST") = dtFinancieroBC.Rows(0).Item("ESTADO")
                    If ViewState("VSEST") = "2" Then
                        chkTerminado.Checked = True
                        chkTerminado.Enabled = False
                        btn_guardar.Visible = False
                    End If
                End If
                'Llenamos las fechas
                txt.Text = ViewState("VSdate1")
                txt2.Text = ViewState("VSdate2")
                txt3.Text = ViewState("VSdate3")
                txt4.Text = ViewState("VSdate4")

                gv_doc.HeaderRow.Cells(5).Text = "Visita 1 <br> <font size='1'>" & ViewState("VSdate1") & "</font>"
                gv_doc.HeaderRow.Cells(6).Text = "Visita 2 <br> <font size='1'>" & ViewState("VSdate2") & "</font>"
                gv_doc.HeaderRow.Cells(7).Text = "Visita 3 <br> <font size='1'>" & ViewState("VSdate3") & "</font>"
                gv_doc.HeaderRow.Cells(8).Text = "Visita 4 <br> <font size='1'>" & ViewState("VSdate4") & "</font>"

            End If
        End If
    End Sub

    'insertar_financiero_per(IDPLAN, IDPOACT, strCodigo, Ejc_Mes_Aux, MTMa, MTMb, MTMc, MTMd, OB, F1, F2, F3, F4, ViewState("VSEST"), TV1, TV2, TV3, TV4)
    Public Sub insertar_financiero_per(ByVal IDPOACT As String, ByVal IDPLAN As String, ByVal MTM1 As String, ByVal Ejc_Mes_Aux As String, ByVal IDFPER As String,
                                ByVal MTM2 As String, ByVal MTM3 As String, ByVal MTM4 As String, ByVal OB As String, ByVal F1 As String, ByVal F2 As String, ByVal F3 As String, ByVal F4 As String, ByVal E As String,
                                ByVal TV1 As String, ByVal TV2 As String, ByVal TV3 As String, ByVal TV4 As String, ByVal strVersionPoaVigente As String)
        Dim objfinancierobc As FinancieroBC = New FinancieroBC
        objfinancierobc.insertar_financiero_per(IDPLAN, IDPOACT, IDFPER, Ejc_Mes_Aux, MTM1, MTM2, MTM3, MTM4, OB, F1, F2, F3, F4, E, TV1, TV2, TV3, TV4, strVersionPoaVigente)
    End Sub

    'Editar poa_financiero_persona
    Public Sub edicion_finaciero(ByVal Ejec_M As String, ByVal V1 As String, ByVal V2 As String, ByVal V3 As String, ByVal V4 As String, ByVal IDPFP As String, ByVal OB As String, ByVal F1 As String, ByVal F2 As String, ByVal F3 As String, ByVal F4 As String, ByVal E As String,
                                ByVal TV1 As String, ByVal TV2 As String, ByVal TV3 As String, ByVal TV4 As String, ByVal strVersionPoaVigente As String)
        Dim objFinancieroBC As FinancieroBC = New FinancieroBC
        objFinancieroBC.edicion_finaciero(Ejec_M, V1, V2, V3, V4, IDPFP, OB, F1, F2, F3, F4, E, TV1, TV2, TV3, TV4, strVersionPoaVigente)
    End Sub

    Public Sub bloquear()
        If ViewState("VSdate1").ToString = "" Then 'Si no hay datos de fecha 1
            Dim k As Integer
            For k = 0 To gv_Detalle.Rows.Count - 1  'Recorremos la grilla
                Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(k).FindControl("TextBox2"), TextBox)
                htxtM2.Enabled = False  'Deshabilitamos textbox de meta 2
            Next
            'Deshabilitamos Fechas 2, 3 y 4
            txt2.Enabled = False
            ImgCalIni2.Enabled = False
            txt3.Enabled = False
            ImgCalIni3.Enabled = False
            txt4.Enabled = False
            ImgCalIni4.Enabled = False
        Else
            'Habilitamos fecha 2
            txt2.Enabled = True
            ImgCalIni2.Enabled = True
            For k = 0 To gv_Detalle.Rows.Count - 1
                Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(k).FindControl("TextBox2"), TextBox)
                htxtM2.Enabled = True
            Next
        End If

        If ViewState("VSdate2").ToString = "" Then  'Si no ha y datos en fecha 2
            Dim l As Integer
            For l = 0 To gv_Detalle.Rows.Count - 1  'Recorremos la grilla
                Dim htxtM3 As TextBox = CType(gv_Detalle.Rows(l).FindControl("TextBox3"), TextBox)
                htxtM3.Enabled = False  'Deshabilitamos textbox de meta 3
            Next
            'Deshabilitamos Fechas 3 y 4
            txt3.Enabled = False
            ImgCalIni3.Enabled = False
            txt4.Enabled = False
            ImgCalIni4.Enabled = False
        Else
            'Habilitamos fecha 3
            txt3.Enabled = True
            ImgCalIni3.Enabled = True
            For l = 0 To gv_Detalle.Rows.Count - 1
                Dim htxtM3 As TextBox = CType(gv_Detalle.Rows(l).FindControl("TextBox3"), TextBox)
                htxtM3.Enabled = True
            Next
        End If

        If ViewState("VSdate3").ToString = "" Then  'Si no ha y datos en fecha 3
            Dim m As Integer
            For m = 0 To gv_Detalle.Rows.Count - 1  'Recorremos la grilla
                Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(m).FindControl("TextBox4"), TextBox)
                htxtM2.Enabled = False  'Deshabilitamos textbox de meta 4
            Next
            'Deshabilitamos Fechas 4
            txt4.Enabled = False
            ImgCalIni4.Enabled = False
        Else
            'Habilitamos fecha 4
            txt4.Enabled = True
            ImgCalIni4.Enabled = True
            For m = 0 To gv_Detalle.Rows.Count - 1
                Dim htxtM2 As TextBox = CType(gv_Detalle.Rows(m).FindControl("TextBox4"), TextBox)
                htxtM2.Enabled = True
            Next
        End If

        'By Tigrito (06/06/2013): Desabilita los campos editables cuando esta terminado el edicion/ingreso
        If chkTerminado.Checked = True Then

            ImgCalIni1.Enabled = False
            ImgCalIni2.Enabled = False
            ImgCalIni3.Enabled = False
            ImgCalIni4.Enabled = False

            txt.Enabled = False
            txt2.Enabled = False
            txt3.Enabled = False
            txt4.Enabled = False
            gv_Detalle.Enabled = False
        End If

    End Sub

    Public Sub sumar()
        Dim i As Integer
        Dim sum1 As Decimal = 0
        Dim sum2 As Decimal = 0
        Dim sum3 As Decimal = 0
        Dim sum4 As Decimal = 0
        Dim htxtV1 As TextBox
        Dim htxtV2 As TextBox
        Dim htxtV3 As TextBox
        Dim htxtV4 As TextBox

        For i = 0 To gv_Detalle.Rows.Count - 1
            If txt.Text <> "" Then
                htxtV1 = CType(gv_Detalle.Rows(i).FindControl("TextBox1"), TextBox)
                If htxtV1.Text = "" Then
                    htxtV1.Text = 0
                End If
                Dim strV1 As Decimal = Convert.ToDecimal(htxtV1.Text)
                sum1 = sum1 + strV1
            End If
            If txt2.Text <> "" Then
                htxtV2 = CType(gv_Detalle.Rows(i).FindControl("TextBox2"), TextBox)
                If htxtV2.Text = "" Then
                    htxtV2.Text = 0
                End If
                Dim strV2 As Decimal = Convert.ToDecimal(htxtV2.Text)
                sum2 = sum2 + strV2
            End If
            If txt3.Text <> "" Then
                htxtV3 = CType(gv_Detalle.Rows(i).FindControl("TextBox3"), TextBox)
                If htxtV3.Text = "" Then
                    htxtV3.Text = 0
                End If
                Dim strV3 As Decimal = Convert.ToDecimal(htxtV3.Text)
                sum3 = sum3 + strV3
            End If
            If txt4.Text <> "" Then
                htxtV4 = CType(gv_Detalle.Rows(i).FindControl("TextBox4"), TextBox)
                If htxtV4.Text = "" Then
                    htxtV4.Text = 0
                End If
                Dim strV4 As Decimal = Convert.ToDecimal(htxtV4.Text)
                sum4 = sum4 + strV4
            End If

        Next

        CType(gv_Detalle.FooterRow.FindControl("lbltotal"), Label).Text = sum1
        CType(gv_Detalle.FooterRow.FindControl("lbltotal2"), Label).Text = sum2
        CType(gv_Detalle.FooterRow.FindControl("lbltotal3"), Label).Text = sum3
        CType(gv_Detalle.FooterRow.FindControl("lbltotal4"), Label).Text = sum4

    End Sub

    Protected Sub imgbtn_Click(ByVal sender As Object, ByVal e As EventArgs) 'ImageClickEventArgs)
        txtCod.Text = String.Empty
        txtObservacion.Text = String.Empty
        'Dim btndetails As ImageButton = TryCast(sender, ImageButton)
        Dim btndetails As Button = TryCast(sender, Button)
        Dim gvrow As GridViewRow = DirectCast(btndetails.NamingContainer, GridViewRow)
        hdCod.Value = gv_Detalle.DataKeys(gvrow.RowIndex).Value.ToString()
        ViewState("NroFila") = Convert.ToInt16(gvrow.RowIndex)
        Dim dv As DataView = New DataView(ViewState("Datos"), "ID_POA_ACTIVIDAD_FINANCIERA='" + hdCod.Value + "'", "ID_POA_FINACIERO_PERSONA", DataViewRowState.CurrentRows)
        Dim dt As DataTable
        dt = New DataTable
        dt = dv.ToTable()
        txtCod.Text = dt.Rows(0).Item("GENERICA").ToString
        'txtNombre.Text = dt.Rows(0).Item("DESCRIPCION").ToString
        txtNombre.InnerHtml = dt.Rows(0).Item("DESCRIPCION").ToString
        txtMetaAcum.Style.Add("TEXT-ALIGN", "right")
        txtMetaAcum.Text = Format(CDec(dt.Rows(0).Item("ACUMULADO").ToString), "#,##0.00")
        txtMetaAnual.Style.Add("TEXT-ALIGN", "right")
        txtMetaAnual.Text = Format(CDec(dt.Rows(0).Item("META_ANUAL").ToString), "#,##0.00")
        txtMetaMes.Style.Add("TEXT-ALIGN", "right")
        txtMetaMes.Text = Format(CDec(dt.Rows(0).Item("MES1").ToString), "#,##0.00")
        txtObservacion.Text = dt.Rows(0).Item("OBSERVACIONES").ToString
        txtEjecMes.Style.Add("TEXT-ALIGN", "right")
        txtEjecMes.Text = Format(Obt_Ultimo_Ejecutado_Acum(dt.Rows(0).Item("FECHA_VISITA1").ToString, dt.Rows(0).Item("FECHA_VISITA2").ToString, dt.Rows(0).Item("FECHA_VISITA3").ToString, dt.Rows(0).Item("FECHA_VISITA4").ToString, dt.Rows(0).Item("META_MENSUAL1"), dt.Rows(0).Item("META_MENSUAL2"), dt.Rows(0).Item("META_MENSUAL3"), dt.Rows(0).Item("META_MENSUAL4")) - dt.Rows(0).Item("EJEC_EN_EL_MES"), "#,##0.00")
        txtEjecMesPorc.Style.Add("TEXT-ALIGN", "right")
        txtEjecMesPorc.Text = String.Format("{0:#,###0.0%}", DivPorCero(Obt_Ultimo_Ejecutado_Acum(dt.Rows(0).Item("FECHA_VISITA1").ToString, dt.Rows(0).Item("FECHA_VISITA2").ToString, dt.Rows(0).Item("FECHA_VISITA3").ToString, dt.Rows(0).Item("FECHA_VISITA4").ToString, dt.Rows(0).Item("META_MENSUAL1"), dt.Rows(0).Item("META_MENSUAL2"), dt.Rows(0).Item("META_MENSUAL3"), dt.Rows(0).Item("META_MENSUAL4")) - dt.Rows(0).Item("EJEC_EN_EL_MES"), dt.Rows(0).Item("MES1")))
        txtMesAcum.Style.Add("TEXT-ALIGN", "right")
        txtMesAcum.Text = String.Format("{0:#,###0.00}", Obt_Ultimo_Ejecutado_Acum(dt.Rows(0).Item("FECHA_VISITA1").ToString, dt.Rows(0).Item("FECHA_VISITA2").ToString, dt.Rows(0).Item("FECHA_VISITA3").ToString, dt.Rows(0).Item("FECHA_VISITA4").ToString, dt.Rows(0).Item("META_MENSUAL1"), dt.Rows(0).Item("META_MENSUAL2"), dt.Rows(0).Item("META_MENSUAL3"), dt.Rows(0).Item("META_MENSUAL4")))
        txtMesAcumPorc.Style.Add("TEXT-ALIGN", "right")
        txtMesAcumPorc.Text = String.Format("{0:#,###0.0%}", DivPorCero(Obt_Ultimo_Ejecutado_Acum(dt.Rows(0).Item("FECHA_VISITA1").ToString, dt.Rows(0).Item("FECHA_VISITA2").ToString, dt.Rows(0).Item("FECHA_VISITA3").ToString, dt.Rows(0).Item("FECHA_VISITA4").ToString, dt.Rows(0).Item("META_MENSUAL1"), dt.Rows(0).Item("META_MENSUAL2"), dt.Rows(0).Item("META_MENSUAL3"), dt.Rows(0).Item("META_MENSUAL4")), dt.Rows(0).Item("ACUMULADO")))
        If CDec(txtEjecMes.Text) < 0 Then
            txtEjecMes.ForeColor = Drawing.Color.Red
            txtEjecMesPorc.ForeColor = Drawing.Color.Red
        Else
            txtEjecMes.ForeColor = Drawing.Color.Black
            txtEjecMesPorc.ForeColor = Drawing.Color.Black
        End If
        If CDec(txtMesAcum.Text) < 0 Then
            txtMesAcum.ForeColor = Drawing.Color.Red
            txtMesAcumPorc.ForeColor = Drawing.Color.Red
        Else
            txtMesAcum.ForeColor = Drawing.Color.Black
            txtMesAcumPorc.ForeColor = Drawing.Color.Black
        End If
        If txtObservacion.Text.Length > 20 Then
            txtObservacion.Height = txtObservacion.Text.Length / 7
        Else
            txtObservacion.Height = 25
        End If
        Me.ModalPopupExtender1.Show()
    End Sub

    Protected Sub btnUpdate_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim datos As DataTable
        datos = New DataTable
        datos = ViewState("Datos")
        ViewState("Obs_inicial") = datos.Rows(ViewState("NroFila")).Item("OBSERVACIONES")
        'Crear código
        Dim strCero As String = ""
        strCero = txtObservacion.Text.Substring(0, 1)
        If strCero = "," Or txtObservacion.Text.Length = 0 Then
        Else
            Dim indice As Integer = 0
            Dim longInicial As Integer = 0
            Dim longFinal As Integer = txtObservacion.Text.Length
            If ViewState("Obs_inicial").ToString.Trim <> "" And ViewState("Obs_inicial").ToString.Trim <> Quitar_Coma_Inicial(txtObservacion.Text) Then
                indice = txtObservacion.Text.IndexOf(ViewState("Obs_inicial"))
                longInicial = ViewState("Obs_inicial").ToString.Length
                If txtObservacion.Text.IndexOf(ViewState("Obs_inicial")) > -1 Then
                    txtObservacion.Text = txtObservacion.Text.Substring(longInicial + 1, longFinal - longInicial - 1)
                End If
            End If
        End If
        Dim strCodigo, strObs As String
        strCodigo = hdCod.Value
        strObs = Quitar_Coma_Inicial(txtObservacion.Text)
        Dim rowfs As DataRow = datos.Rows(ViewState("NroFila")) 'hdIndice.Value)        
        rowfs("OBSERVACIONES") = strObs
        txtObservacion.Text = ""
        'datos.Rows.Add(rowfs)
        Me.gv_Detalle.DataSource = datos
        Me.gv_Detalle.DataBind()
    End Sub

    Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As EventArgs)
        txtObservacion.Text = ""
        ModalPopupExtender1.Hide()
    End Sub

#End Region

#Region "FUNCIONES"

    Function CleanInput(ByVal strIn As String) As String
        Return Regex.Replace(strIn, "[^\w\.@-]", "")
    End Function

    'Obtenemos el numero de registros
    Public Function verifica_accion(ByVal poa As String, ByVal strPeriodo As String) As Integer
        Dim objFinancieroBC As FinancieroBC
        Dim NUMERO As Integer
        Try
            objFinancieroBC = New FinancieroBC
            NUMERO = objFinancieroBC.verifica_accion(poa, strPeriodo)
            Return NUMERO
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Private Function comparefecha() As Boolean
        'Comparamos Fecha 1 (Dia, Mes  y año)
        Dim fa As Date = Convert.ToDateTime(txt.Text)
        Dim mesp1 As Integer = (CType(ViewState("VSmesp"), Integer))
        Dim añop1 As Integer = (CType(ViewState("VSañop"), Integer))
        Dim boofecha As Boolean

        Dim mest1c As Integer = Month(fa)
        Dim añot1c As Integer = Year(fa)
        Dim diat1c As Integer = Day(fa)
        Dim fsystem1 As Integer = Now.Day
        boofecha = True

        If ViewState("CodPeriodo") = "201401" Then
            añop1 = "2014"
        End If

        If mest1c <> mesp1 Then     'Si el mes de edicion es distinto al mes de calendario
            alerta.Mostrar_Alerta("Aviso", "La fecha de la Visita 1 no corresponde al mes de la Ficha de Monitoreo que es <b>" & ViewState("NombrePeriodo") & "</b>")

            'By Tigrito: Commented 29/05/2013
            'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))

            bloquear()
            boofecha = False
        ElseIf añot1c <> añop1 Then 'Si el año de edicion es distinto al año de calendario 
            alerta.Mostrar_Alerta("Aviso", "El año de la visita 1 no corresponde al Periodo")

            'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
            bloquear()
            boofecha = False

            'By Tigrito (01/07/2013): Commented 
            'ElseIf diat1c > fsystem1 Then 'Si el dia actual es distinto al dia de calendario
            '    alerta.Mostrar_Alerta("Aviso", "El Día Registrado es Superior al Actual")

            '    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
            '    bloquear()
            '    boofecha = False
        End If

        If boofecha = True Then     'Si la fecha coincide 
            'Si la fecha 2 NO está vacia
            If txt2.Text <> "" Then
                'Comparamos Fecha 2 (Dia, Mes  y año)
                Dim fb As Date = Convert.ToDateTime(txt2.Text)
                Dim mest2c As Integer = Month(fb)
                Dim añot2c As Integer = Year(fb)
                Dim diat2c As Integer = Day(fb)
                Dim fsystem2 As Integer = Now.Day
                If mest2c <> mesp1 Then
                    alerta.Mostrar_Alerta("Aviso", "La fecha de la Visita 2 no corresponde al mes de la Ficha de Monitoreo que es <b>" & ViewState("NombrePeriodo") & "</b>")

                    'By Tigrito: Commented 29/05/2013
                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))

                    bloquear()
                    boofecha = False
                ElseIf añot2c <> añop1 Then
                    alerta.Mostrar_Alerta("Aviso", "El año de la visita 2 no corresponde al Periodo")

                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    bloquear()

                    'By Tigrito (01/07/2013): Commented 
                    'ElseIf diat2c > fsystem2 Then
                    '    alerta.Mostrar_Alerta("Aviso", "El Día Registrado  es Superior al Actual")

                    '    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    '    bloquear()
                    '    boofecha = False
                End If
            End If
            'Si la fecha 3 NO está vacia
            If txt3.Text <> "" Then
                'Comparamos Fecha 3 (Dia, Mes  y año)
                Dim fc As Date = Convert.ToDateTime(txt3.Text)
                Dim mest3c As Integer = Month(fc)
                Dim añot3c As Integer = Year(fc)
                Dim diat3c As Integer = Day(fc)
                Dim fsystem3 As Integer = Now.Day
                If mest3c <> mesp1 Then
                    alerta.Mostrar_Alerta("Aviso", "La fecha de la Visita 3 no corresponde al mes de la Ficha de Monitoreo que es <b>" & ViewState("NombrePeriodo") & "</b>")

                    'By Tigrito: Commented 29/05/2013
                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))

                    bloquear()
                    boofecha = False
                ElseIf añot3c <> añop1 Then
                    alerta.Mostrar_Alerta("Aviso", "El año de la visita 3 no corresponde al Periodo")
                    carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    bloquear()
                    boofecha = False

                    'By Tigrito (01/07/2013): Commented 
                    'ElseIf diat3c > fsystem3 Then
                    '    alerta.Mostrar_Alerta("Aviso", "El Día Registrado es Superior al Actual")
                    '    carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    '    bloquear()
                    '    boofecha = False

                End If
            End If
            'Si la fecha 4 NO está vacia
            If txt4.Text <> "" Then
                'Comparamos Fecha 4 (Dia, Mes  y año)
                Dim fd As Date = Convert.ToDateTime(txt4.Text)
                Dim mest4c As Integer = Month(fd)
                Dim añot4c As Integer = Year(fd)
                Dim diat4c As Integer = Day(fd)
                Dim fsystem4 As Integer = Now.Day
                If mest4c <> mesp1 Then
                    alerta.Mostrar_Alerta("Aviso", "La fecha de la Visita 4 no corresponde al mes de la Ficha de Monitoreo que es <b>" & ViewState("NombrePeriodo") & "</b>")

                    'By Tigrito: Commented 29/05/2013
                    'carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    bloquear()
                ElseIf añot4c <> añop1 Then
                    alerta.Mostrar_Alerta("Aviso", "El año de la visita 4 no corresponde al Periodo")
                    carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    bloquear()

                    'By Tigrito (01/07/2013): Commented 
                    'ElseIf diat4c > fsystem4 Then
                    '    alerta.Mostrar_Alerta("Aviso", "El Día Registrado es Superiro al Actual")
                    '    carga_grilla(ViewState("VSTPOA"), ViewState("CodPeriodo"))
                    '    bloquear()
                End If
            End If
        End If
        Return boofecha
    End Function

    Public Function Obt_Ultimo_Ejecutado_Acum(ByVal strFecha1 As String, ByVal strFecha2 As String, ByVal strFecha3 As String, ByVal strFecha4 As String, ByVal strEjecutado1 As Double, ByVal strEjecutado2 As Double, ByVal strEjecutado3 As Double, ByVal strEjecutado4 As Double) As Double
        Dim dblAuxi As Double
        If strFecha4 <> "" Then
            dblAuxi = strEjecutado4
        ElseIf strFecha3 <> "" Then
            dblAuxi = strEjecutado3
        ElseIf strFecha2 <> "" Then
            dblAuxi = strEjecutado2
        ElseIf strFecha1 <> "" Then
            dblAuxi = strEjecutado1
        Else
            dblAuxi = 0
        End If
        Return dblAuxi
    End Function

    Public Function DivPorCero(ByVal Dividendo As Decimal, ByVal Divisor As Decimal) As Decimal
        Dim dblAux As Decimal

        If Divisor = 0 Then
            dblAux = 0
        Else
            dblAux = (Dividendo / Divisor)
        End If

        Return dblAux

    End Function

    'Public Function MyFunc(ByVal strEjecutado1 As Double) As Double
    Public Function MyFunc() As Decimal
        Dim dblAux As Decimal

        If txt.Text = "" Then
            dblAux = 0
        Else
            dblAux = 10
        End If

        Return dblAux

    End Function

    Public Function Quitar_Coma_Inicial(ByVal strCadena As String) As String
        Dim strRetorno As String = String.Empty
        Try
            If strCadena <> String.Empty Then
                If strCadena.Substring(0, 1) = "," Then
                    strRetorno = Quitar_Coma_Inicial(strCadena.Remove(0, 1))
                Else
                    strRetorno = strCadena
                End If
            End If
        Catch ex As Exception
            Throw ex
        End Try
        Return strRetorno
    End Function

#End Region

End Class